package com.jian.poi.demo;

import com.jian.poi.demo.common.WordTableExtractor;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xwpf.usermodel.*;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Name: DocxReader
 * Description: TODO
 * author: JJ
 * create: 2025/2/19 15:32
 */
public class DocxReader {
    public static void main(String[] args) throws IOException, InvalidFormatException {
        // 文件在 resources 目录下的路径，不要带 src/main/resources
        String resourcePath = "templates/测试专用.docx"; //
        // 使用 ClassLoader 获取 InputStream
        InputStream inputStream = DocxReader.class.getClassLoader().getResourceAsStream(resourcePath);
        if (inputStream == null) {
            System.err.println("错误：未找到资源文件 -> " + resourcePath);
            return;
        }
        System.out.println("✅ 成功加载 resources 下的 .docx 文件，可以进行后续处理（如解析、上传等）");
        XWPFDocument document = new XWPFDocument(inputStream);
        // 获取所有表格
        List<XWPFTable> tables = WordTableExtractor.getTables(document);
//        List<Map<String, Object>> tableDataList = WordTableExtractor.getTableData(tables);
//        System.out.println("===== 全部信息 =====");
//        tableDataList.forEach(System.out::println);
        List<Map<String, Object>> baseInfoList = WordTableExtractor.getBaseInfo(tables);
        System.out.println("===== 提取基础信息（如：项目、总体概况等） =====");
        if (!baseInfoList.isEmpty()) {
            System.out.println("基础信息（示例/首条）: " + baseInfoList.get(0));
        }
        baseInfoList.forEach(System.out::println);
        List<Map<String, Object>> infoList = WordTableExtractor.getPipelineDefectInfo(tables);
        System.out.println("===== 提取具体信息（如：各管段详细信息） =====");
        // 打印全部或筛选后的具体信息
        infoList.forEach(System.out::println);
        List<XWPFPictureData> pictures = document.getAllPictures();
        // 打印图片详细信息
//        for (XWPFPictureData pic : pictures) {
//            System.out.printf("图片ID: %s | 文件名: %s | 格式: %s%n",
//                    pic.getPackagePart().getPartName(),
//                    pic.getFileName(),
//                    pic.suggestFileExtension());
//        }

    }


}
